package com.weilai.service;

import com.github.pagehelper.PageInfo;
import com.weilai.domain.Comments;
import com.weilai.domain.Posts;
import com.weilai.domain.Tag;
import com.weilai.domain.Videos;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;
import java.util.Map;

public interface VideosService {

    Videos selectById(int id);

    List<Videos> selectByUserId(int id);

    boolean isLikedByUser(int userId, int videoId);

    int isLiked(int videoId, int userId);
    //int selectTagById(String name);
    // 根据标签名称查询标签
    Tag getTagByTagName(String tagName);
    //添加视频
    void addVideoDescription(Videos videos);
    void addVideoFile(Videos videos);
    //删除视频
    void deleteById(int id);
    //修改视频
    void update(Videos video);
    //查询所有视频
    PageInfo<Videos> selectAllVideos(int pageNum, int pageSize);
    //查询别人所有视频
    List<Videos> selectAllUsersVideos(int userId);
    //查询自己所有视频
    List<Videos> selectMyAllVideos(int userId);
    //根据标题关键字查询视频
    List<Videos> selectByTitle(String title);
    //根据时间查询视频
    List<Videos> selectByDate(String date1, String date2);
    // 点赞操作
    Map<String, Object> like(int userId, int videoId);
    Map<String, Object> cancelLike(int userId, int videoId);
    // 评论操作
    String comment(Comments comments);
    //获取指定视频的所有评论
    List<Comments> getCommentsByVideoId(int videoId);
    // 浏览操作
    void view(int videoId);
    // 转发操作
    void share(int videoId);
    // 用户删除自己的评论
    String deleteCommentByUser(int commentId, int userId);
    // 作者删除评论
    String deleteCommentByAuthor(int commentId, int userId);
    Comments getCommentById(int commentId);
    //在首页根据视频标题关键字查询
    List<Videos> selectByKeywords(String keywords);
    // 按 userid 删除视频
    public void deleteUserById(int userId);

    //按userId查询视频数据
    List<Videos> selectData(int userId);
}
